ededitor)是用於Unix類Unix作業系統的行編輯器。它是Unix作業系統在1969年8月開發出來的最初部分[1]。它仍舊是POSIXOpen Group的基於Unix的作業系統標準的一部分[2],與更加完備的全螢幕幕編輯器vi並列。

Quick Facts 原作者, 開發者 ...
ed
Thumb
ed文字編輯器
原作者Ken Thompson
開發者AT&T貝爾實驗室
首次發佈1973年, 50–51年前
作業系統Unix類Unix
類型文字編輯器
Close

歷史和影響

ed文字編輯器是Unix作業系統最初的三個要件之一:組譯器編輯器shell,它們是肯·湯普遜在1969年8月於AT&T貝爾實驗室PDP-7上開發的[3]。ed的很多特徵來自qed英語QED_(text_editor)文字編輯器,它是湯普遜的母校加州大學伯克利分校開發的[4] 。湯普遜非常熟悉qed,曾經在CTSSMultics系統上重新實現過它。湯普遜版本的qed曾因首先實現了正則表達式而著名。正則表達式也實現於ed中,儘管相比qed中的這裏實現的要相當不具一般性。

丹尼斯·里奇生產了後來道格拉斯·麥克羅伊所描述的「終極」ed[5],ed的各方面轉而影響了ex,它依次又產生了vi。非互動式Unix命令grep受到qed和後來的ed常見特定用法的啟發,它們的命令g/re/p含義是全域尋找正則表達式re並列印包含它的行。Unix串流編輯器sed實現了未被Unix上的ed所支援的qed英語QED (text editor)的很多指令碼特徵。

特徵

ed的特徵包括:

  • 在所有Unix系統上必然可獲得,在符合單一UNIX規範的系統上是強制的。
  • 模態編輯器,支援命令模式、文字模式和檢視模式。
  • 支援正則表達式
  • 通過從標準輸入取得命令而達成的強力自動化。

著稱於它的簡潔性,ed幾乎不給予視覺反饋[6],故而曾被Peter H. Salus英語Peter H. Salus稱為「曾有過的最仇視用戶的編輯器」,即使是比較於同時代的(因複雜而聲名狼藉的)TECO英語TECO (text editor)。例如,在有錯誤的情況,或它想要確認用戶希望不儲存退出的時候,ed產生的訊息就是「?」。它不報告當前檔名或行號,甚至不顯示變更文字的結果,除非發出要求。更老版本(大約1981年)在發起退出命令而用戶沒有儲存變更的時候甚至不提示確認[6]。這種簡潔性對Unix的早期版本是適當的,那時控制台是電傳打字機數據機很慢,而主記憶體是珍貴的。電腦技術進步使得這些限制解除了,有更多視覺反饋的編輯器成為常規。

在當前實踐中,ed極少互動式使用,但卻在一些shell指令碼中有所使用。對於互動式使用,ed於1980年代被sam英語Sam_(text_editor)viEmacs編輯器取代。ed事實上可以在所有可獲得的Unix和Linux版本上找到,因此對必須在多個版本Unix上工作的人有用。在基於Unix的作業系統上,一些實用工具如SQL Plus英語SQL Plus執行ed作為編輯器,如果EDITOR和VISUAL環境變數沒有定義的話[7]。如果在故障的情況下,ed有時是唯一可獲得的編輯器。這幾乎是它互動式使用的唯一時刻。

ed命令在其他基於行的編輯器中經常被模仿。例如,在早期版本的MS-DOS32-bit版本的Windows NT中,EDLIN英語edlin有某種程度上類似的語法,在很多MUDLPMud英語LPMud和後代)中的文字編輯器使用類似ed的語法。但是這些編輯器典型的在功能上更加有限。

例子

下面是一個ed對談的例子抄錄。為了清晰,命令和用戶鍵入的文字使用正常字型,而來自ed的輸出被加粗。

a
ed is the standard Unix text editor.
This is line number two.
.
2i
 
.
,l
ed is the standard Unix text editor.$
$
This is line number two.$
3s/two/three/
,l
ed is the standard Unix text editor.$
$
This is line number three.$
w text
65
q

最後結果是包含下列文字的一個簡單文字檔案:

ed is the standard Unix text editor.
 
This is line number three.

開始於一個空檔案,a命令附加文字,所有ed命令都是單一字母。這個命令安置ed進入「插入模式」,插入隨後的字元,並由只有一個單一的點的行終止。在此點終止前鍵入的兩行進入檔案緩衝區。2i命令也進入插入模式,並在第2行之前插入鍵入的文字,這裏是空行。所有命令都可以字首一個行號來在此行上進行操作。

在行,l中,l表示列表命令。這個命令字首着一個範圍,這裏是,,它是1,$的簡寫。範圍是由逗號分隔的兩個行號,$意味着最後一行。作為回應,ed列出所有行,從最先至最後。這些行用美元號終結,所以在行尾的空白明顯可見。

一旦空行被插入到第2行前,讀作「This is line number two」的行,現在實際上是第3行。這個錯誤使用3s/two/three/命令來更正,這是替換命令。3指定應用這個命令的那個行;隨後是要被替換的文字,接着是要替代成的文字。現在用,l命令列出的行是正確的了。

w text命令寫緩衝區到檔案「text」,使得ed用「65」來響應,這是寫到檔案中的字元數目。q命令結束ed對談。

參見

參照

外部連結

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.